#pragma once
#include <stdint.h>
#include "freertos/FreeRTOS.h"

typedef enum {
    UART_AIR780 = 0,  // UART1
    UART_LC29H,       // UART2
    UART_MAX
} uart_device_t;

typedef void (*uart_rx_callback_t)(uart_device_t dev, const uint8_t* data, size_t len);

// 初始化所有串口
void hal_uart_init();

// 发送数据（非阻塞）
bool hal_uart_send(uart_device_t dev, const uint8_t* data, size_t len);

// 注册接收回调
void hal_uart_set_rx_callback(uart_rx_callback_t cb);

// 获取串口硬件配置（根据实际电路修改）
static inline uart_port_t get_uart_port(uart_device_t dev) {
    return (dev == UART_AIR780) ? UART_NUM_1 : UART_NUM_2;
}

static inline void get_uart_pins(uart_device_t dev, int* tx_pin, int* rx_pin) {
    if (dev == UART_AIR780) {
        *tx_pin = GPIO_NUM_17;
        *rx_pin = GPIO_NUM_18;
    } else { // LC29H
        *tx_pin = GPIO_NUM_21;
        *rx_pin = GPIO_NUM_22;
    }
}
